//import jdk.incubator.vector.FloatVector;
//import jdk.incubator.vector.VectorSpecies;
//
//public class MatrixAdditionBenchmark {
//    private static final int SIZE = 1024 * 4;
//    private static final int REPEAT = 100;
//    private static final VectorSpecies<Float> SPECIES = FloatVector.SPECIES_PREFERRED;
//
//    public static void main(String[] args) {
//        float[] a = new float[SIZE * SIZE];
//        float[] b = new float[SIZE * SIZE];
//        float[] c = new float[SIZE * SIZE];
//
//        // 初始化矩阵 A 和 B
//        for (int i = 0; i < a.length; i++) {
//            a[i] = i;
//            b[i] = i;
//        }
//
//        // 预热
//        for (int i = 0; i < 100; i++) {
//            vectorAdd(a, b, c);
//            simpleAdd(a, b, c);
//        }
//
//        // 测试 SIMD 加法
//        long startTime = System.nanoTime();
//        for (int i = 0; i < REPEAT; i++) {
//            vectorAdd(a, b, c);
//        }
//        long endTime = System.nanoTime();
//        System.out.println("SIMD Average Time: " + (endTime - startTime) / REPEAT / 1e6 + " ms");
//
//        // 测试普通加法
//        startTime = System.nanoTime();
//        for (int i = 0; i < REPEAT; i++) {
//            simpleAdd(a, b, c);
//        }
//        endTime = System.nanoTime();
//        System.out.println("Simple Average Time: " + (endTime - startTime) / REPEAT / 1e6 + " ms");
//    }
//
//    private static void vectorAdd(float[] a, float[] b, float[] c) {
//        for (int i = 0; i < a.length; i += SPECIES.length()) {
//            FloatVector va = FloatVector.fromArray(SPECIES, a, i);
//            FloatVector vb = FloatVector.fromArray(SPECIES, b, i);
//            FloatVector vc = va.add(vb);
//            vc.intoArray(c, i);
//        }
//    }
//
//    private static void simpleAdd(float[] a, float[] b, float[] c) {
//        for (int i = 0; i < a.length; i++) {
//            c[i] = a[i] + b[i];
//        }
//    }
//}